﻿using System;
using System.Collections.Generic;

namespace VkontakteSharp.Model
{
    public abstract class BasicRecord
    {
        /// <summary>
        /// Общедоступная ссылка на запись
        /// </summary>
        public abstract string Link { get; }

        /// <summary>
        /// идентификатор записи на стене пользователя
        /// </summary>
        [JsonMapping("id", JsonMapping.MappingType.Primitive)]
        public long Id { get; set; }
        /// <summary>
        ///  идентификатор пользователя, создавшего запись
        /// </summary>
        [JsonMapping("from_id", JsonMapping.MappingType.Primitive)]
        public long FromId { get; set; }
        /// <summary>
        /// время публикации записи
        /// </summary>
        [JsonMapping("date", JsonMapping.MappingType.Primitive)]
        public DateTime Date { get; set; }
        /// <summary>
        /// текст записи
        /// </summary>
        [JsonMapping("text", JsonMapping.MappingType.Primitive)]
        public string Text { get; set; }
        /// <summary>
        /// содержит информацию о количестве комментариев к записи. Более подробная информация представлена на странице Описание поля comments
        /// </summary>
        [JsonMapping("comments", JsonMapping.MappingType.Class)]
        public Comments Comments { get; set; }
        /// <summary>
        ///  содержит информацию о числе людей, которым понравилась данная запись. Более подробная информация представлена на странице Описание поля likes
        /// </summary>
        [JsonMapping("likes", JsonMapping.MappingType.Class)]
        public Like Likes { get; set; }
        /// <summary>
        /// содержит информацию о числе людей, которые скопировали данную запись на свою страницу. Более подробная информация представлена на странице Описание поля reposts
        /// </summary>
        [JsonMapping("reposts", JsonMapping.MappingType.Class)]
        public Reposts Reposts { get; set; }
        /// <summary>
        /// если в записи содержится информация о местоположении, то она будет представлена в данном поле. Более подробная информация представлена на странице Описание поля geo
        /// </summary>
        [JsonMapping("geo", JsonMapping.MappingType.Class)]
        public Geo Geo { get; set; }
        
        /// <summary>
        ///  содержит массив объектов, прикреплённых к текущей записи (фотография, ссылка и т.п.). Более подробная информация представлена на странице Описание поля attachments
        /// </summary>
        [JsonMapping("attachments", JsonMapping.MappingType.Collection)]
        public List<Attachment> Attachments { get; set; }


    }
}